indy versus synapse - II

Otázka od: nonsense@volny.cz

24. 8. 2004 14:29

ahoj vespolek,

celkem se zajmem sleduji "zurivou" polemiku, co je lepsi. A co
je blokujici a co ne. Zkusil jsem si vlastni prikladek na dane
tema, mysleno blokujici versus neblokujici server.

jestli jsem to dobre pochopil, tak neblokujici server by mel
pracovat (asi) nasledujicim zpusobem: 1. klient se pokusi navazat
spojeni na portu (prepokladejme port 2020) serveru, ktery na
tomto nasloucha. 2. server klientovi odpovi neco v tom smyslu, ze
akceptuje jeho pozadavky, ale jelikoz je neblokujici, navrhne
klientovi jiny port, na kterem bude probihat nasledna komunikace.
Aby na naslouchanem portu mohl "zatukat" jiny klient. 3. klient
toto akceptuje a vytvori si svuj novy socket dle parametru, ktere
dostal od serveru. 4. a pokud neumreli, komunikuji dodnes (po
tomto "novem" spojeni).

Tak, to jenom abychom si sjednotili slovnik (doufam)....

Pomoci Indy (to znam dele a lepe nez synapsi) jsem si vytvoril
(velmi) jednoducheho servera a klienta. Spustim server, ten zacne
nasloucha na danem portu. Spustim nekolik instanci klienta a
vsechny si otevrou spojeni se serverem. Server tyto akceptuje,
vsechny zdanlive na stejnem socketu (tak to alespon tvrdi KPF).

Otazky
a) jde z Indy "vyloudit" informaci na jakem socketu skutecne
komunikuje (predpokladam, ze funguje vyse popsany mechanismus).
Nejak se mi to nedari, asi indy zas tak dobre neumim...   b)
lze pro popsany rezim cinnosti pouzit i synapsi ??

prosim, poradte zmatene lesni vcelce....

diky



--
Hrajte s nami o 1000 Kc kazdy den! Pripojte se pres VOLNY a
tipujte teplotu na vybranem miste v Ceske republice. Uzijte si
leto s VOLNY na strankach http://soutez.volny.cz.


Odpovedá: Lukas Gebauer

24. 8. 2004 15:10

> jestli jsem to dobre pochopil, tak neblokujici server by mel
> pracovat (asi) nasledujicim zpusobem:

> 1. klient se pokusi navazat spojeni na portu (prepokladejme port 2020)
> serveru, ktery na tomto nasloucha.
> 2. server klientovi odpovi neco v tom smyslu, ze akceptuje jeho
> pozadavky, ale jelikoz je neblokujici, navrhne klientovi jiny port, na
> kterem bude probihat nasledna komunikace. Aby na naslouchanem portu
> mohl "zatukat" jiny klient.
> 3. klient toto akceptuje a vytvori si svuj novy socket dle parametru,
> ktere dostal od serveru.
> 4. a pokud neumreli, komunikuji dodnes (po tomto "novem" spojeni).

Tak to jsi spravne nepochopil.  

a) jestli je server blokujici nebo neblokujici, tak to zalezina necem
uplne jinem. Tyto rerminy se pouzivaji na popis vztahu mezi tvum
programem a APi zajistujici socketovou komunikci.

b) TCP na strane serveru vypada takto:

1. Klient z nejakeho sveho lokalniho socketu se snazi otevrit spojeni
na ten tvuj port 2020. Spojeni odchazi z nejakeho vetsinounahodne
zvoleneho portu, dejme tomu treba z portu 1500.

2. Server spojeni prijme, a vytvori si dalsi socket, kterym obsluhuje
tveho klienta. tento socket ma ale skutecne stejny port s tim
naslouchacim, tedy port 2020! Ale socket je jiny.

3. klient zadny dalsi socket nevytvari, pouziva porad ten, ktery
pouzil na iniciovani spojeni. Klientovi nevadi, ze na strane serveru
jej obsluhuje jiny socket nez ktery prijmul spojeni, protoze on
posila data na porad stejnou adresu i port.

4. neumreli a komunikuji.; -)

Musis si uvedomit, ze socket ja na kazdem pocitaci definovan jako
dvojice adresa:port a adresa:port. Tedy lokalni adresa a port a
adresa a port druheho pocitace.

Je tedy mozne mit ruzne sockety, ktere maji uplne stejnou lokalni
adresu i port, pokud jsou odlisne adresy ci porty vzdaleneho
pocitace.

> si otevrou spojeni se serverem. Server tyto akceptuje, vsechny
> zdanlive na stejnem socketu (tak to alespon tvrdi KPF).

Zdanlive... ve skutecnosti jsou to ruzne sockety, protoze se lisi
adresa a port druhe strany. Na lokalni strane jsou ty adresy a porty
skutecne stejne, neni to zadna chyba ani zaludnost. To co rika Kerio
je jednoduse pravda.



--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.


Odpovedá: nonsense@volny.cz

24. 8. 2004 19:39

Tak to jsi spravne nepochopil.  

a) jestli je server blokujici nebo neblokujici, tak to zalezina
necem uplne jinem. Tyto rerminy se pouzivaji na popis vztahu
mezi tvum
programem a APi zajistujici socketovou komunikci.

No, mam pocit, ze jsem se opravdu nepresne vyjadril. Popis - viz
vyse je vicemene opsany z nejakych administratorskych manualu,
kdyz se konfuguruji nektere sluzby treba na Linuxu. Jsou tam
pouzivany opradu presne tyhle terminy i s vysvetlenim....


b) TCP na strane serveru vypada takto:

1. Klient z nejakeho sveho lokalniho socketu se snazi otevrit
spojeni na ten tvuj port 2020. Spojeni odchazi z nejakeho
vetsinounahodne
zvoleneho portu, dejme tomu treba z portu 1500.

2. Server spojeni prijme, a vytvori si dalsi socket, kterym
obsluhuje tveho klienta. tento socket ma ale skutecne stejny
port s tim
naslouchacim, tedy port 2020! Ale socket je jiny.

Joo, jen asi pouzivame kazdy jiny slovnik. Precti si co jsi
napsal. Server vytvari DALSI socket. Ergo, server uz jeden socket
vytvoril a na nem nasloucha. Ergo, je to v podstate dle meho
popisu -viz minuly prispevek, body 1-4. A me by zajimalo (hlavne
ze zvedavosti), JAKY je ten dalsi socket (=adresa:port). Ze se
jedna o nahodne zvoleny port vim, chci zjistit o jaky
konkretne.... to jsem se puvodne ptal.

3. klient zadny dalsi socket nevytvari, pouziva porad ten, ktery
pouzil na iniciovani spojeni. Klientovi nevadi, ze na strane
serveru jej obsluhuje jiny socket nez ktery prijmul spojeni,
protoze on
posila data na porad stejnou adresu i port.

4. neumreli a komunikuji.; -)

Musis si uvedomit, ze socket ja na kazdem pocitaci definovan jako
 dvojice adresa:port a adresa:port. Tedy lokalni adresa a port a
adresa a port druheho pocitace.

Mam pocit, ze terminologickych nepresnosti je tady vice nez je
asi zdravo. Jestlize je socket definovan jako dvojce
lokalni/vzdalena adresa:port, co je to teda za terminus v bode
b1) a b2) ?? V te chvili by prece u klienta jeste zadny socket
nemel existovat, jelikoz jeste nenavazal spojeni. Prave se o to
snazi.... Navic, termin lokalni socket mi v uvedenem kontextu
nejak nedava smysl, maximalne tak polovina socketoveho spojeni.
Ale kde je ta druha pulka?? Navic, borlandi help rika toto:
A full description of a socket connection includes the addresses
of the sockets on both ends of the connection. You can describe
the ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
address of each socket endpoint by supplying both the IP address
or host and the port number.

Before you can make a socket connection, you must fully describe
the sockets that form its endpoints. Some of the information is
available from the system your application is running on. For
instance, you do not need to describe the local IP address of a
client socket--this information is available from the operating
system.

The information you must provide depends on the type of socket
you are working with. Client sockets must describe the server
they want to connect to. Listening server sockets must describe
the port that represents the service they provide.

Mluvi o soketech v mnoznem cisle. proto jsem to chapal tak, ze
kazda strana si otevre svuj socket a pak vznikne scketove
spojeni...

Je tedy mozne mit ruzne sockety, ktere maji uplne stejnou lokalni
 adresu i port, pokud jsou odlisne adresy ci porty vzdaleneho
pocitace.
??????

>> si otevrou spojeni se serverem. Server tyto akceptuje, vsechny
>> zdanlive na stejnem socketu (tak to alespon tvrdi KPF).


Zdanlive... ve skutecnosti jsou to ruzne sockety, protoze se lisi
 adresa a port druhe strany. Na lokalni strane jsou ty adresy a
porty skutecne stejne, neni to zadna chyba ani zaludnost. To co
rika Kerio je jednoduse pravda.

Nejsem si tak jisty.
Uz je to delsi dobu, ale (matne) si vzpominam, ze kdyz jsem se
ptal (zprostredkovane) hochu z Keria, tak se mi dostalo odpovedi,
ze kerio zobrazuje socket(=adresa:port) na kterem se komunikace
navazala, aby bylo mozne jednoduse poznat, ze jde napr. o ssh
komunikaci. Socket, na kterem pak probihaji vlastni
prenosy/komunikace je z pohledu evidence o jakou sluzbu jde
nezajimave....

kazdopadne diky za reakci.

Jaroslav nonsense lukes


--
Zrychlete si az 7x nacitani www stranek a obrazku pres vytacene
pripojeni pomoci VOLNY internet akceleratoru. Stazeni a pouzivani
je ZDARMA. http://akcelerator.volny.cz



Odpovedá: Lukas Gebauer

25. 8. 2004 8:00

> Joo, jen asi pouzivame kazdy jiny slovnik. Precti si co jsi
> napsal. Server vytvari DALSI socket. Ergo, server uz jeden socket
> vytvoril a na nem nasloucha. Ergo, je to v podstate dle meho popisu
> -viz minuly prispevek, body 1-4. A me by zajimalo (hlavne ze
> zvedavosti), JAKY je ten dalsi socket (=adresa:port). Ze se jedna o
> nahodne zvoleny port vim, chci zjistit o jaky konkretne.... to jsem se
> puvodne ptal.

Je to dalsi socket, ale zadny nahodne zvoleny port tam neni. takze
nemas co zjistovat. To, co ti vraci Indy nebo synapse jako lokalni
socket neni zadna chimera... je to skutecne pravda!

> Mam pocit, ze terminologickych nepresnosti je tady vice nez je
> asi zdravo. Jestlize je socket definovan jako dvojce
> lokalni/vzdalena adresa:port, co je to teda za terminus v bode
> b1) a b2) ?? V te chvili by prece u klienta jeste zadny socket
> nemel existovat, jelikoz jeste nenavazal spojeni. Prave se o to
> snazi.... Navic, termin lokalni socket mi v uvedenem kontextu
> nejak nedava smysl, maximalne tak polovina socketoveho spojeni.
> Ale kde je ta druha pulka??

Achich... tak znova a polopate!

na tvem pocitaci mas jeden socket. n druhem pocitaci mas druhy
socket. Jsou to dva ruzne sockety. jeden je u tebe(tedy lokalni
socket), druhy je na jinem pocitaci. Dva ruzne sockety. Ok?

Ale i pres to kazdy z techto socketu je definovan jako dvojice adres,
tvoje lokalni adresa a pot a adresa a port druhe strany. Tedy, mas
ctyri udaje... lokalni adresa, lokalni port, vzdalena adresa a
vzdaleny port. Na rozliseni jednotlivych ocketu v ramci jednoho
pocitace ti staci, aby se lisila alespon jedna z techto ctyr polozek.

Jak je to s tim naslouchacim socketem, kde zadna druha strana
neexistuje? Inu, prazdna IP adresa a port je take preci hodnota! Dik
tomu dokazes rozlisit mezi packety, ktere navazuji spojeni, a mezi
packety, ktere jiz navzano maji.

> Je tedy mozne mit ruzne sockety, ktere maji uplne stejnou lokalni
> adresu i port, pokud jsou odlisne adresy ci porty vzdaleneho
> pocitace.
> ??????

Ano, prave u TCP to tak presne funguje.

Ta lokalni adresa, kterou ti vraci indy, Synapse, nebo ktrou pise
kerio, je skutecne presne takova.

To co sis myslel, je velmi rozireny omyl, ba dokonce i ja sam jsem se
jej kdysi dopustil.  

Ostatne, overit to jde velmi snadno... pust si jakekoliv
zahytavanipacketu (treba pres free ethereal), a pak se podivej do
obsahu jednotlivych pakcetu, jak vypadaji ty adresy...zjistis, ze se
skutecne komunikuje pres stejnou adresu i port, na kterem se navazalo
spojeni.

> Nejsem si tak jisty.
> Uz je to delsi dobu, ale (matne) si vzpominam, ze kdyz jsem se
> ptal (zprostredkovane) hochu z Keria, tak se mi dostalo odpovedi, ze
> kerio zobrazuje socket(=adresa:port) na kterem se komunikace navazala,
> aby bylo mozne jednoduse poznat, ze jde napr. o ssh komunikaci.
> Socket, na kterem pak probihaji vlastni prenosy/komunikace je z
> pohledu evidence o jakou sluzbu jde nezajimave....

To se maji hosi z Keria cim chlubit.  

Ver vlastnim ocim! Stahni si ten Ethereal, a zachyt si packety s
komunikaci s tym serverem, a tam se podivej na vlastni oci, ze mam
pravdu.  



--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.


Odpovedá: Petr Fejfar

25. 8. 2004 8:17

Lukas Gebauer wrote:

> na tvem pocitaci mas jeden socket. n druhem pocitaci mas druhy
> socket. Jsou to dva ruzne sockety. jeden je u tebe(tedy lokalni
> socket), druhy je na jinem pocitaci. Dva ruzne sockety. Ok?
>
> Ale i pres to kazdy z techto socketu je definovan jako dvojice adres,
> tvoje lokalni adresa a pot a adresa a port druhe strany.

Jen jestli ten pojem socket nejake nepretezujes  

RFC 793 (TCP specification):

socket
          An address which specifically includes a port identifier, that
          is, the concatenation of an Internet Address with a TCP port.
connection
          A logical communication path identified by a pair of sockets.


pf


Odpovedá: Lukas Gebauer

25. 8. 2004 8:40

> Jen jestli ten pojem socket nejake nepretezujes  

Prosim, nedelej v tom jeste vetsi zmatky.


--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.


Odpovedá: Petr Fejfar

25. 8. 2004 9:07

Lukas Gebauer wrote:

>> Jen jestli ten pojem socket nejake nepretezujes  
>
> Prosim, nedelej v tom jeste vetsi zmatky.

Tak ti nevim, kdo v tom dela zmatky, kdyz mluvi o spojeni
a oznacuje ho jako socket :-? Pak neni divu, ze nejste
schopni se domluvit o takove banalite.

pf


Odpovedá: Lukas Gebauer

25. 8. 2004 11:19

> Tak ti nevim, kdo v tom dela zmatky, kdyz mluvi o spojeni
> a oznacuje ho jako socket :-? Pak neni divu, ze nejste
> schopni se domluvit o takove banalite.

Pokud mas pocit, ze jsem to vysvetlil blbe, tak to vysvetli lepe. To
ty ale neumis, tak sis pockal, az se to pokusi vysvetlit neko jiny, a
pak ho chytas za slovicka a delas chytreho. Promin, ale tohle umi
kazdy trouba. Kdyz tomu tak dobre rozumis, proc jsi to puvodnimu
tazateli nevysvetlil sam?

Je totiz uplne jedno, jak socket definuje RFC na popis TCP spojeni,
protoz my se bavime o socketu z pohledu API. Dle tve definice je
socket definovan jako adresa+port. Jenze v pocitaci mas mnoho RUZNYCH
socketu, ktere maji uplne STEJNOU adresu i port. Jak chces definovat
a rozlisovat dva sockety od sebe podle stenych hodnot? Definovat a
potazmo rozlisovat je od sebe muzes jen podle hodnot, ktere jsou pro
kazdy socket jine.

A temito hodnotami je prave par lokalni adresy a vzdalene adresy.
Podle toho poznas, ke kteremu socketu patri jake TCP spojeni, tedy v
prenesenem slova smyslu je ten socket definovan prave parem adres a
portu, protoze to je teprve hodnota, podle ktere muzes jednotlive
sockety u TCP protokolu od sebe rozlisit.

Mas-li jiny nazor, vysvetli si to sam a lepe. Kdyz uz venuji svuj
volny cas na vysvetlovani, chci jej venovat lidem, kteri to opravdu
potrebuji, ale ne rejpalum. To opravdu budu radeji delat neco
uzitecnejsiho. Tesim se, jak od ted bude konference zaplavena tvymi
ukazkovymi vysvetlenimi, ktera budou naprosto bez jakychkoliv
nepresnosti, a vsichni je na prvni precteni pochopi. Budeme jen
vsichni radi!  


--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.


Odpovedá: Petr Fejfar

25. 8. 2004 11:57

Lukas Gebauer wrote:

> kazdy trouba. Kdyz tomu tak dobre rozumis, proc jsi to puvodnimu
> tazateli nevysvetlil sam?

Asi proto, ze jsem puvodni dotaz cetl az po Tobe a v konferenci vzdy doctu
cely thread, nez odpovidam. Ja bych mu misto nepresnych
popisu pastnul popis funkce Accept().

> Je totiz uplne jedno, jak socket definuje RFC na popis TCP spojeni,
> protoz my se bavime o socketu z pohledu API.

Ano, ty se bavis o prvku rozhrani, ale ze to tak stejne chape puvodniho
tazatel
uz tak zrejme neni, proto by IMHO bylo vhodne v popisu tohle jasne
odlisovat.


pf


Odpovedá: nonsense@volny.cz

26. 8. 2004 19:05

----- PUVODNI ZPRAVA -----
Od: "Lukas Gebauer" <gebylist@mlp.cz>
Komu: delphi-l@clexpert.cz
Predmet: Re: indy versus synapse - II
Datum: 25.8.2004 - 9:23:30

> Achich... tak znova a polopate!
Ano, natvrdlik dekuje ....

>
> na tvem pocitaci mas jeden socket. n druhem pocitaci mas druhy
> socket. Jsou to dva ruzne sockety. jeden je u tebe(tedy lokalni
> socket), druhy je na jinem pocitaci. Dva ruzne sockety. Ok?
>
> Ale i pres to kazdy z techto socketu je definovan jako dvojice
> adres,
> tvoje lokalni adresa a pot a adresa a port druhe strany. Tedy,
> mas
> ctyri udaje... lokalni adresa, lokalni port, vzdalena adresa a
> vzdaleny port. Na rozliseni jednotlivych ocketu v ramci jednoho
> pocitace ti staci, aby se lisila alespon jedna z techto ctyr
> polozek.

Nez zacnu zase mit pritrouble poznamky ....
Mas v podstate pravdu. Je to tak, jak si se mi to snazil (az
doted) vysvetlit. Presneji receno, bezezbytku tak. Aby ale nebylo
vsechno tak zarive jasave, kolega Fejfar mel taky kus pravdy. Ta
potiz (jak jsem utrapen a uhonen zjistil) je v tom, ze se
pouzivaji stejna slova, pokazde s trochu jinym obsahem. A to je
prave ta svinarna. Je si to podobne, ale ne stejne. Pojem socket
z pohledu admistratora relevantnich systemu je chapan opravdu
tak, jak jsem se snazil vysvetlit ve svem (asi) prvnim dotazu.
Pojem socket z pohledu programatora (na API "urovni") je presne
ten, co jsi se snazil natvdlikovi (=me) objasnit. Kdyz jsem
procetl asi tunu papiru (vecery a noce umim travit
prijemneji...), tak se mi (snad) problem trochu objasnil. Po
prekonani zaludnosti v podobe toho, ze veskere popisy datove
struktury tykajici se socketu (ktere jsem vygooglil) opravdu
popisuji pouze jeden par adresa:port. Doslo mi, ze datova
struktura vytvorena jadrem operacniho systemu pro obshulu
sitoveho spojeni, muze byt trosku (=dost) jina, nez popisuji
nejake principy. Kupodivu jsem cast vysvetleni nenasel na Inetu,
ale v knize od M.Bacha, principy operacniho systemu Unix (zvanou
Unixova bible). Uz vim proc. V ni je velmi pekne vysvetlen princip
fungovani Berkely Socketu, v4.3 (nebo tak nejak). Taky me
prekvapilo, ze Microsoft skoro presne toto implementoval ve svem
Winsock. Uz mene me prekvapilo, ze ze se o tomto nijak podrobne
na (ani svych strankach MSDN) nerozepisuje, ani nepopisuje. V
podstate mlcky dodrzuje fukncionalitu Unix systemu vcetne
pojmenovani vetsiny funkci, kdy provazani data na drate->moje
aplikace vede sice pres sockety, ale urceni o jaky socket se
jedna v podstate dela operacni system. Moji aplikaci to "dava na
vedomi" pres
handler toho socketu. Proto to tak funguje. Proto
taky dokud se neprovede obslouzeni navratu z funkce Accept (na
strane naslouchaciho serveru) nelze navazat nove spojeni. Duvod
je uz jasny. Diky Lukasi Gebauere !!

P.S.
prosim o spravny obsahovy vyklad slov v uvozovkach....
>
> Jak je to s tim naslouchacim socketem, kde zadna druha strana
> neexistuje? Inu, prazdna IP adresa a port je take preci
hodnota! > Dik
> tomu dokazes rozlisit mezi packety, ktere navazuji spojeni, a
> mezi
> packety, ktere jiz navzano maji.
Ano, jen zopakuji. Ve
"spolupraci s operacnim systemem a
prislusnym handlerem toho socketu".

>
> Ver vlastnim ocim! Stahni si ten Ethereal, a zachyt si packety
s > komunikaci s tym serverem, a tam se podivej na vlastni oci,
ze
> mam
> pravdu.  

Uz verim.
A jsem jsem docela rad, ze neumru jako totalni hlupak.
Ethereal a jim "nachytane" pakety byla ta druha pulka, co me
presvedcilo.

Jen tak pro zajimavost. Kdyz jsem prolezal zdrojaky Indy,
prekvapilo me, jak neuveritelne slozite (vsminete si, jak se
snazim vyhout slovu prasacky) jsou Indy udelany. Muj soukromy
dojem, prosim nekomentovat.

Takze, kdyz se tu nekdo kdysi ptal, co je lepsi, jestli Indy,
nebo Synapse, davam jasne hlas Synapsi. A ted uz si umim i
zduvodnit....

A Pak bych rad velmi, ale opravdu velmi, podekoval Lukasovi
Gebauerovi, ze jako jediny mel tu trpelivost a dal si tu praci,
ze mi pomohl s objasnenim tohoto problemu. I kdyz ho moje
natvrdlost asi uz musela stvat...  

Takze diky.

Jaroslav nonsense Lukes


--
Hrajte s nami o 1000 Kc kazdy den! Pripojte se pres VOLNY a
tipujte teplotu na vybranem miste v Ceske republice. Uzijte si
leto s VOLNY na strankach http://soutez.volny.cz.


Odpovedá: Lukas Gebauer

27. 8. 2004 13:14

> byt trosku (=dost) jina, nez popisuji nejake principy. Kupodivu jsem
> cast vysvetleni nenasel na Inetu, ale v knize od M.Bacha, principy
> operacniho systemu Unix (zvanou Unixova bible). Uz vim proc. V ni je
> velmi pekne vysvetlen princip fungovani Berkely Socketu, v4.3 (nebo
> tak nejak). Taky me prekvapilo, ze Microsoft skoro presne toto
> implementoval ve svem Winsock. Uz mene me prekvapilo, ze ze se o

Microsoft se nikdy netajil s tim, ze jeho Winsock vychazi z BSD
socketu. Je to na Microsoft velmi prekvapive, ze se nesnazil vytvorit
zcela svoje nove rozhrani, ale misto toho vysel z jineho pouzivaneho
rozhrani, ktere jen 'dovylepsil' o nove funkce pro jeho 'asynchronni'
sockety.

To ma pro nas programatory velky uzitek, protoze pokud pouzivas
blokujici nebo neblokujici sockety, je velmi snadne tvuj kod portovat
na jiny system, ktery pouziva take BSD sockety. Treba na Linux, jak
to dela Synapse.

> podstate dela operacni system. Moji aplikaci to "dava na vedomi" pres
> handler toho socketu. Proto to tak funguje.

Presneji receno, Socket z pohledu Winsocku je nejaka interni
struktura reprezentovana handlem. Ta struktura obsahuje informace o
obou koncich spojeni, obsahuje komunikacni buffery, atd. Tedy kazdy
socket vyzaduje v systemu nejakou nenulovou pamet.

> Jen tak pro zajimavost. Kdyz jsem prolezal zdrojaky Indy,
> prekvapilo me, jak neuveritelne slozite (vsminete si, jak se
> snazim vyhout slovu prasacky) jsou Indy udelany. Muj soukromy
> dojem, prosim nekomentovat.

Mne to neprekvapuje, ja to rikam porad.   Ale je to opet muj
soukromy nazor, se kterym klidne muze kdokoliv nesouhlasit.



--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.